package com.zm.convers;

import java.text.DateFormat;
import java.text.DateFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import org.springframework.core.convert.converter.Converter;

/**
 * 传入String类型 传回时间date类型
 * 
 * @author Ming
 *
 */
public class Myconvers implements Converter<String, Date> {
	// 要转换的目标日期类型的格式
	private static final String DATE = "yyyy-MM-dd";
	private static final String DATETIME = "yyyy-MM-dd HH:mm:ss";
	private static final String TIMESTAMP = "yyyy-MM-dd HH:mm:ss.SSS";

	/*
	 * 参数source是被转化的内容，来自于request；返回值是转换的目标值
	 */
	@Override
	public Date convert(String source) {
		// TODO Auto-generated method stub
		Date date =toDate(source);
		return  date;
	}

	public Date toDate(String value) {

		// 默认返回值为当前系统时间
				Date date =null;
				if (value != null && !"".equals(value)) {

					// 判断被转换的对象值是不是String类型
					// 获取转换的对象的字符串
					String dateValue = value.trim();
					// 被转换字符串的长度
					int length = dateValue.length();
					// 判断被转换的类型是不是时间类型
					try {
						DateFormat formatter = null;
						// 转换为“yyyy-MM-dd”格式的Date对象
						if (length <= 10) {
							formatter = new SimpleDateFormat(DATE, new DateFormatSymbols(Locale.CHINA));
							date = formatter.parse(dateValue);
						}
						// 转换为“yyyy-MM-dd HH:mm:ss”格式的Date对象
						else if (length <= 19) {
							formatter = new SimpleDateFormat(DATETIME, new DateFormatSymbols(Locale.CHINA));
							date = formatter.parse(dateValue);
						}
						// 转换为“yyyy-MM-dd HH:mm:ss.SSS”格式的Date对象
						else if (length <= 23) {
							formatter = new SimpleDateFormat(TIMESTAMP, new DateFormatSymbols(Locale.CHINA));
							date = formatter.parse(dateValue);
						}
					} catch (Exception e) {
						e.printStackTrace();
					}

				}
				return date;
	}

}
